package com.yixia.pea.domain.credit;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.yixia.common.core.domain.BaseEntity;
import com.yixia.common.handle.mybatisPlus.ListTypeHandle;
import com.yixia.common.handle.mybatisPlus.StringListTypeHandle;
import com.yixia.pea.domain.doto.PeaCrop;
import com.yixia.pea.domain.doto.PeaFarm;
import lombok.Data;

/**
 * 
 * @TableName pea_hz_base
 */
@TableName(value ="pea_hz_base", autoResultMap = true)
@Data
public class PeaHzBase extends BaseEntity {
    /**
     * 户主ID
     */
    @TableId(value = "hz_id")
    private Long hzId;

    /**
     * 户主姓名
     */
    @TableField(value = "hz_name")
    private String hzName;

    /**
     * 户主性别
     */
    @TableField(value = "hz_sex")
    private String hzSex;

    /**
     * 户主年龄
     */
    @TableField(value = "hz_age")
    private String hzAge;

    /**
     * 户主电话号码
     */
    @TableField(value = "hz_phone_number")
    private String hzPhoneNumber;

    /**
     * 户主身份证号码
     */
    @TableField(value = "hz_id_card_number")
    private String hzIdCardNumber;

    /**
     * 户主所在行政区域
     */
    @TableField(value = "xing_zheng_area", typeHandler = ListTypeHandle.class)
    private List<Long> xingZhengArea;

    /**
     * 家庭详细地址
     */
    @TableField(value = "family_address")
    private String familyAddress;

    /**
     * 户主婚姻状况
     */
    @TableField(value = "hz_marriage")
    private String hzMarriage;

    /**
     * 户主所属民族
     */
    @TableField(value = "hz_nation")
    private String hzNation;

    /**
     * 户主身份证前面的信息
     */
    @TableField(value = "hz_id_card_front")
    private String hzIdCardFront;

    /**
     * 户主身份证后面的信息
     */
    @TableField(value = "hz_id_card_reverse")
    private String hzIdCardReverse;

    /**
     * 户主户口页照片
     */
    @TableField(value = "hz_address_pho")
    private String hzAddressPho;

    /**
     * 是否为本村人
     */
    @TableField(value = "has_in_villager")
    private String hasInVillager;

    /**
     * 家庭人数
     */
    @TableField(value = "family_size")
    private String familySize;

    /**
     * 家庭劳动力人数
     */
    @TableField(value = "family_loader_size")
    private String familyLoaderSize;

    /**
     * 家庭成员是否有重疾病患者
     */
    @TableField(value = "has_ill")
    private String hasIll;

    /**
     * 农户类型
     */
    @TableField(value = "farmer_type", typeHandler = StringListTypeHandle.class)
    private List<String> farmerType;

    /**
     * 是否建档立卡贫困户
     */
    @TableField(value = "has_ping_kun_hu")
    private String hasPingKunHu;

    /**
     * 家庭成员最高学历
     */
    @TableField(value = "max_xue_li")
    private String maxXueLi;

    /**
     * 是否有农村土地经营证书
     */
    @TableField(value = "has_land")
    private String hasLand;

    /**
     * 承包面积（亩）
     */
    @TableField(value = "land_area")
    private BigDecimal landArea;

    /**
     * 产权证编号
     */
    @TableField(value = "can_quan_num")
    private String canQuanNum;

    /**
     * 承包土地经营证书照片
     */
    @TableField(value = "land_pho", typeHandler = StringListTypeHandle.class)
    private List<String> landPho;

    /**
     * 是否有流转他人土地
     */
    @TableField(value = "has_trans_land")
    private String hasTransLand;

    /**
     * 流转面积（亩）
     */
    @TableField(value = "trans_area")
    private BigDecimal transArea;

    /**
     * 山林面积（亩）
     */
    @TableField(value = "tree_area")
    private BigDecimal treeArea;

    /**
     * 林权证编号
     */
    @TableField(value = "tree_deed_num")
    private String treeDeedNum;

    /**
     * 林权证照片
     */
    @TableField(value = "tree_deed_pho", typeHandler = StringListTypeHandle.class)
    private List<String> treeDeedPho;

    /**
     * 本人及配偶是否有农房
     */
    @TableField(value = "has_frame_house")
    private String hasFrameHouse;

    /**
     * 农房新旧程度
     */
    @TableField(value = "new_danger")
    private String newDanger;

    /**
     * 农房结构
     */
    @TableField(value = "house_jie_gou")
    private String houseJieGou;

    /**
     * 农房楼层数
     */
    @TableField(value = "house_height")
    private String houseHeight;

    /**
     * 楼房面积（平米）
     */
    @TableField(value = "house_area")
    private BigDecimal houseArea;



    /**
     * 主营业务经营年限
     */
    @TableField(value = "main_ye_wu_year")
    private String mainYeWuYear;

    /**
     * 主项目经营辖区
     */
    @TableField(value = "main_ye_wu_xia_qu", typeHandler = ListTypeHandle.class)
    private List<Long> mainYeWuXiaQu;

    /**
     * 主要项目经营地址
     */
    @TableField(value = "main_xiang_mu_address")
    private String mainXiangMuAddress;

    /**
     * 家庭主产业
     */
    @TableField(value = "main_chan_ye", typeHandler = StringListTypeHandle.class)
    private List<String> mainChanYe;

    /**
     * 近三年来生产是否受灾
     */
    @TableField(value = "has_zai_hai")
    private String hasZaiHai;

    /**
     * 劳动技能
     */
    @TableField(value = "lao_dong_ji_neng")
    private String laoDongJiNeng;

    /**
     * 养殖项目
     */
    @TableField(value = "farming", typeHandler = JacksonTypeHandler.class)
    private List<PeaFarm> farming = new ArrayList<>();

    /**
     * 种植项目
     */
    @TableField(value = "croping", typeHandler = JacksonTypeHandler.class)
    private List<PeaCrop> croping = new ArrayList<>();

    /**
     * 家庭务工收入（元）
     */
    @TableField(value = "fam_wu_gong_income")
    private BigDecimal famWuGongIncome;

    /**
     * 家庭其他收入（元）
     */
    @TableField(value = "fam_other_income")
    private BigDecimal famOtherIncome;

    /**
     * 生产支出/年（元）
     */
    @TableField(value = "sheng_chan_expend")
    private BigDecimal shengChanExpend;

    /**
     * 家庭生活支出/年（元）
     */
    @TableField(value = "life_expend")
    private BigDecimal lifeExpend;

    /**
     * 是否有金额贷款意向
     */
    @TableField(value = "has_loans")
    private String hasLoans;

    /**
     * 意向贷款金额（元）
     */
    @TableField(value = "loans_money")
    private BigDecimal loansMoney;

    /**
     * 签字地址
     */
    @TableField(value = "sign_url")
    private String signUrl;

    /**
     * 完成情况
     */
    @TableField(value = "finish_status")
    private String finishStatus;

    /**
     * 评分情况
     */
    @TableField(value = "rating_status")
    private String ratingStatus;

    /**
     * 定量评分状态
     */
    @TableField(value = "score_status")
    private String scoreStatus;

    /**
     * 删除标志
     */
    @TableField(value = "del_flag")
    private String delFlag;

    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        PeaHzBase other = (PeaHzBase) that;
        return (this.getHzId() == null ? other.getHzId() == null : this.getHzId().equals(other.getHzId()))
            && (this.getHzName() == null ? other.getHzName() == null : this.getHzName().equals(other.getHzName()))
            && (this.getHzSex() == null ? other.getHzSex() == null : this.getHzSex().equals(other.getHzSex()))
            && (this.getHzAge() == null ? other.getHzAge() == null : this.getHzAge().equals(other.getHzAge()))
            && (this.getHzPhoneNumber() == null ? other.getHzPhoneNumber() == null : this.getHzPhoneNumber().equals(other.getHzPhoneNumber()))
            && (this.getHzIdCardNumber() == null ? other.getHzIdCardNumber() == null : this.getHzIdCardNumber().equals(other.getHzIdCardNumber()))
            && (this.getXingZhengArea() == null ? other.getXingZhengArea() == null : this.getXingZhengArea().equals(other.getXingZhengArea()))
            && (this.getFamilyAddress() == null ? other.getFamilyAddress() == null : this.getFamilyAddress().equals(other.getFamilyAddress()))
            && (this.getHzMarriage() == null ? other.getHzMarriage() == null : this.getHzMarriage().equals(other.getHzMarriage()))
            && (this.getHzNation() == null ? other.getHzNation() == null : this.getHzNation().equals(other.getHzNation()))
            && (this.getHzIdCardFront() == null ? other.getHzIdCardFront() == null : this.getHzIdCardFront().equals(other.getHzIdCardFront()))
            && (this.getHzIdCardReverse() == null ? other.getHzIdCardReverse() == null : this.getHzIdCardReverse().equals(other.getHzIdCardReverse()))
            && (this.getHzAddressPho() == null ? other.getHzAddressPho() == null : this.getHzAddressPho().equals(other.getHzAddressPho()))
            && (this.getHasInVillager() == null ? other.getHasInVillager() == null : this.getHasInVillager().equals(other.getHasInVillager()))
            && (this.getFamilySize() == null ? other.getFamilySize() == null : this.getFamilySize().equals(other.getFamilySize()))
            && (this.getHasIll() == null ? other.getHasIll() == null : this.getHasIll().equals(other.getHasIll()))
            && (this.getFarmerType() == null ? other.getFarmerType() == null : this.getFarmerType().equals(other.getFarmerType()))
            && (this.getHasPingKunHu() == null ? other.getHasPingKunHu() == null : this.getHasPingKunHu().equals(other.getHasPingKunHu()))
            && (this.getMaxXueLi() == null ? other.getMaxXueLi() == null : this.getMaxXueLi().equals(other.getMaxXueLi()))
            && (this.getHasLand() == null ? other.getHasLand() == null : this.getHasLand().equals(other.getHasLand()))
            && (this.getLandArea() == null ? other.getLandArea() == null : this.getLandArea().equals(other.getLandArea()))
            && (this.getCanQuanNum() == null ? other.getCanQuanNum() == null : this.getCanQuanNum().equals(other.getCanQuanNum()))
            && (this.getLandPho() == null ? other.getLandPho() == null : this.getLandPho().equals(other.getLandPho()))
            && (this.getHasTransLand() == null ? other.getHasTransLand() == null : this.getHasTransLand().equals(other.getHasTransLand()))
            && (this.getTransArea() == null ? other.getTransArea() == null : this.getTransArea().equals(other.getTransArea()))
            && (this.getTreeArea() == null ? other.getTreeArea() == null : this.getTreeArea().equals(other.getTreeArea()))
            && (this.getTreeDeedNum() == null ? other.getTreeDeedNum() == null : this.getTreeDeedNum().equals(other.getTreeDeedNum()))
            && (this.getTreeDeedPho() == null ? other.getTreeDeedPho() == null : this.getTreeDeedPho().equals(other.getTreeDeedPho()))
            && (this.getHasFrameHouse() == null ? other.getHasFrameHouse() == null : this.getHasFrameHouse().equals(other.getHasFrameHouse()))
            && (this.getNewDanger() == null ? other.getNewDanger() == null : this.getNewDanger().equals(other.getNewDanger()))
            && (this.getHouseJieGou() == null ? other.getHouseJieGou() == null : this.getHouseJieGou().equals(other.getHouseJieGou()))
            && (this.getHouseHeight() == null ? other.getHouseHeight() == null : this.getHouseHeight().equals(other.getHouseHeight()))
            && (this.getHouseArea() == null ? other.getHouseArea() == null : this.getHouseArea().equals(other.getHouseArea()))
            && (this.getMainYeWuYear() == null ? other.getMainYeWuYear() == null : this.getMainYeWuYear().equals(other.getMainYeWuYear()))
            && (this.getMainYeWuXiaQu() == null ? other.getMainYeWuXiaQu() == null : this.getMainYeWuXiaQu().equals(other.getMainYeWuXiaQu()))
            && (this.getMainXiangMuAddress() == null ? other.getMainXiangMuAddress() == null : this.getMainXiangMuAddress().equals(other.getMainXiangMuAddress()))
            && (this.getMainChanYe() == null ? other.getMainChanYe() == null : this.getMainChanYe().equals(other.getMainChanYe()))
            && (this.getHasZaiHai() == null ? other.getHasZaiHai() == null : this.getHasZaiHai().equals(other.getHasZaiHai()))
            && (this.getLaoDongJiNeng() == null ? other.getLaoDongJiNeng() == null : this.getLaoDongJiNeng().equals(other.getLaoDongJiNeng()))
            && (this.getFarming() == null ? other.getFarming() == null : this.getFarming().equals(other.getFarming()))
            && (this.getCroping() == null ? other.getCroping() == null : this.getCroping().equals(other.getCroping()))
            && (this.getFamWuGongIncome() == null ? other.getFamWuGongIncome() == null : this.getFamWuGongIncome().equals(other.getFamWuGongIncome()))
            && (this.getFamOtherIncome() == null ? other.getFamOtherIncome() == null : this.getFamOtherIncome().equals(other.getFamOtherIncome()))
            && (this.getShengChanExpend() == null ? other.getShengChanExpend() == null : this.getShengChanExpend().equals(other.getShengChanExpend()))
            && (this.getLifeExpend() == null ? other.getLifeExpend() == null : this.getLifeExpend().equals(other.getLifeExpend()))
            && (this.getHasLoans() == null ? other.getHasLoans() == null : this.getHasLoans().equals(other.getHasLoans()))
            && (this.getLoansMoney() == null ? other.getLoansMoney() == null : this.getLoansMoney().equals(other.getLoansMoney()))
            && (this.getFinishStatus() == null ? other.getFinishStatus() == null : this.getFinishStatus().equals(other.getFinishStatus()))
            && (this.getRatingStatus() == null ? other.getRatingStatus() == null : this.getRatingStatus().equals(other.getRatingStatus()))
            && (this.getScoreStatus() == null ? other.getScoreStatus() == null : this.getScoreStatus().equals(other.getScoreStatus()))
            && (this.getCreateBy() == null ? other.getCreateBy() == null : this.getCreateBy().equals(other.getCreateBy()))
            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
            && (this.getUpdateBy() == null ? other.getUpdateBy() == null : this.getUpdateBy().equals(other.getUpdateBy()))
            && (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getHzId() == null) ? 0 : getHzId().hashCode());
        result = prime * result + ((getHzName() == null) ? 0 : getHzName().hashCode());
        result = prime * result + ((getHzSex() == null) ? 0 : getHzSex().hashCode());
        result = prime * result + ((getHzAge() == null) ? 0 : getHzAge().hashCode());
        result = prime * result + ((getHzPhoneNumber() == null) ? 0 : getHzPhoneNumber().hashCode());
        result = prime * result + ((getHzIdCardNumber() == null) ? 0 : getHzIdCardNumber().hashCode());
        result = prime * result + ((getXingZhengArea() == null) ? 0 : getXingZhengArea().hashCode());
        result = prime * result + ((getFamilyAddress() == null) ? 0 : getFamilyAddress().hashCode());
        result = prime * result + ((getHzMarriage() == null) ? 0 : getHzMarriage().hashCode());
        result = prime * result + ((getHzNation() == null) ? 0 : getHzNation().hashCode());
        result = prime * result + ((getHzIdCardFront() == null) ? 0 : getHzIdCardFront().hashCode());
        result = prime * result + ((getHzIdCardReverse() == null) ? 0 : getHzIdCardReverse().hashCode());
        result = prime * result + ((getHzAddressPho() == null) ? 0 : getHzAddressPho().hashCode());
        result = prime * result + ((getHasInVillager() == null) ? 0 : getHasInVillager().hashCode());
        result = prime * result + ((getFamilySize() == null) ? 0 : getFamilySize().hashCode());
        result = prime * result + ((getHasIll() == null) ? 0 : getHasIll().hashCode());
        result = prime * result + ((getFarmerType() == null) ? 0 : getFarmerType().hashCode());
        result = prime * result + ((getHasPingKunHu() == null) ? 0 : getHasPingKunHu().hashCode());
        result = prime * result + ((getMaxXueLi() == null) ? 0 : getMaxXueLi().hashCode());
        result = prime * result + ((getHasLand() == null) ? 0 : getHasLand().hashCode());
        result = prime * result + ((getLandArea() == null) ? 0 : getLandArea().hashCode());
        result = prime * result + ((getCanQuanNum() == null) ? 0 : getCanQuanNum().hashCode());
        result = prime * result + ((getLandPho() == null) ? 0 : getLandPho().hashCode());
        result = prime * result + ((getHasTransLand() == null) ? 0 : getHasTransLand().hashCode());
        result = prime * result + ((getTransArea() == null) ? 0 : getTransArea().hashCode());
        result = prime * result + ((getTreeArea() == null) ? 0 : getTreeArea().hashCode());
        result = prime * result + ((getTreeDeedNum() == null) ? 0 : getTreeDeedNum().hashCode());
        result = prime * result + ((getTreeDeedPho() == null) ? 0 : getTreeDeedPho().hashCode());
        result = prime * result + ((getHasFrameHouse() == null) ? 0 : getHasFrameHouse().hashCode());
        result = prime * result + ((getNewDanger() == null) ? 0 : getNewDanger().hashCode());
        result = prime * result + ((getHouseJieGou() == null) ? 0 : getHouseJieGou().hashCode());
        result = prime * result + ((getHouseHeight() == null) ? 0 : getHouseHeight().hashCode());
        result = prime * result + ((getHouseArea() == null) ? 0 : getHouseArea().hashCode());
        result = prime * result + ((getMainYeWuYear() == null) ? 0 : getMainYeWuYear().hashCode());
        result = prime * result + ((getMainYeWuXiaQu() == null) ? 0 : getMainYeWuXiaQu().hashCode());
        result = prime * result + ((getMainXiangMuAddress() == null) ? 0 : getMainXiangMuAddress().hashCode());
        result = prime * result + ((getMainChanYe() == null) ? 0 : getMainChanYe().hashCode());
        result = prime * result + ((getHasZaiHai() == null) ? 0 : getHasZaiHai().hashCode());
        result = prime * result + ((getLaoDongJiNeng() == null) ? 0 : getLaoDongJiNeng().hashCode());
        result = prime * result + ((getFarming() == null) ? 0 : getFarming().hashCode());
        result = prime * result + ((getCroping() == null) ? 0 : getCroping().hashCode());
        result = prime * result + ((getFamWuGongIncome() == null) ? 0 : getFamWuGongIncome().hashCode());
        result = prime * result + ((getFamOtherIncome() == null) ? 0 : getFamOtherIncome().hashCode());
        result = prime * result + ((getShengChanExpend() == null) ? 0 : getShengChanExpend().hashCode());
        result = prime * result + ((getLifeExpend() == null) ? 0 : getLifeExpend().hashCode());
        result = prime * result + ((getHasLoans() == null) ? 0 : getHasLoans().hashCode());
        result = prime * result + ((getLoansMoney() == null) ? 0 : getLoansMoney().hashCode());
        result = prime * result + ((getFinishStatus() == null) ? 0 : getFinishStatus().hashCode());
        result = prime * result + ((getRatingStatus() == null) ? 0 : getRatingStatus().hashCode());
        result = prime * result + ((getScoreStatus() == null) ? 0 : getScoreStatus().hashCode());
        result = prime * result + ((getCreateBy() == null) ? 0 : getCreateBy().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
        result = prime * result + ((getUpdateBy() == null) ? 0 : getUpdateBy().hashCode());
        result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", hzId=").append(hzId);
        sb.append(", hzName=").append(hzName);
        sb.append(", hzSex=").append(hzSex);
        sb.append(", hzAge=").append(hzAge);
        sb.append(", hzPhoneNumber=").append(hzPhoneNumber);
        sb.append(", hzIdCardNumber=").append(hzIdCardNumber);
        sb.append(", xingZhengArea=").append(xingZhengArea);
        sb.append(", familyAddress=").append(familyAddress);
        sb.append(", hzMarriage=").append(hzMarriage);
        sb.append(", hzNation=").append(hzNation);
        sb.append(", hzIdCardFront=").append(hzIdCardFront);
        sb.append(", hzIdCardReverse=").append(hzIdCardReverse);
        sb.append(", hzAddressPho=").append(hzAddressPho);
        sb.append(", hasInVillager=").append(hasInVillager);
        sb.append(", familySize=").append(familySize);
        sb.append(", hasIll=").append(hasIll);
        sb.append(", farmerType=").append(farmerType);
        sb.append(", hasPingKunHu=").append(hasPingKunHu);
        sb.append(", maxXueLi=").append(maxXueLi);
        sb.append(", hasLand=").append(hasLand);
        sb.append(", landArea=").append(landArea);
        sb.append(", canQuanNum=").append(canQuanNum);
        sb.append(", landPho=").append(landPho);
        sb.append(", hasTransLand=").append(hasTransLand);
        sb.append(", transArea=").append(transArea);
        sb.append(", treeArea=").append(treeArea);
        sb.append(", treeDeedNum=").append(treeDeedNum);
        sb.append(", treeDeedPho=").append(treeDeedPho);
        sb.append(", hasFrameHouse=").append(hasFrameHouse);
        sb.append(", newDanger=").append(newDanger);
        sb.append(", houseJieGou=").append(houseJieGou);
        sb.append(", houseHeight=").append(houseHeight);
        sb.append(", houseArea=").append(houseArea);
        sb.append(", mainYeWuYear=").append(mainYeWuYear);
        sb.append(", mainYeWuXiaQu=").append(mainYeWuXiaQu);
        sb.append(", mainXiangMuAddress=").append(mainXiangMuAddress);
        sb.append(", mainChanYe=").append(mainChanYe);
        sb.append(", hasZaiHai=").append(hasZaiHai);
        sb.append(", laoDongJiNeng=").append(laoDongJiNeng);
        sb.append(", farming=").append(farming);
        sb.append(", croping=").append(croping);
        sb.append(", famWuGongIncome=").append(famWuGongIncome);
        sb.append(", famOtherIncome=").append(famOtherIncome);
        sb.append(", shengChanExpend=").append(shengChanExpend);
        sb.append(", lifeExpend=").append(lifeExpend);
        sb.append(", hasLoans=").append(hasLoans);
        sb.append(", loansMoney=").append(loansMoney);
        sb.append(", finishStatus=").append(finishStatus);
        sb.append(", ratingStatus=").append(ratingStatus);
        sb.append(", scoreStatus=").append(scoreStatus);
        sb.append(", remark=").append(remark);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}